//
// Created by miaomiaole on 2023/3/29.
//

#ifndef CMAKECXX_INSTRUMENT_H
#define CMAKECXX_INSTRUMENT_H

#include <iostream>

using namespace std;
enum note {
    middleC, Csharp, Cflat
};

class Instrument {
public:
    // 虚函数（抽象函数）
    virtual void play(note dd) const {
        cout << "Instrument：：play " << dd << endl;
    };

    // 纯虚函数 (不允许生成基类对象，必须由子类实现该函数）
    //  virtual char *what(int) = 0;

};

class Wind : public Instrument {

public:
    void play(note dd) const {
        cout << "Wind::play " << dd << endl;
    }
};

#include <string>

class Pet {
    string panme;
public:
    Pet(const string &petName) : panme(petName) {}

    string name() const {
        return "abcde";
    };


};

class Dog : public Pet, Wind {
    string cname;
public:
    // 使用父类创建name对象
    Dog(const string &petName) : Pet(petName) {}


    virtual string sit() const {
        // 子类调用父类方法
        return Pet::name() + "sits";
    }


    string speak() const {
        return Pet::name();
    }


};

#endif //CMAKECXX_INSTRUMENT_H
